<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="eKfkh" id="eKfkh"><span data-lake-id="ub09308a6" id="ub09308a6">典型回答</span></h1>
  <p data-lake-id="uef35969b" id="uef35969b"><br></p>
  <p data-lake-id="u4ded7541" id="u4ded7541"><span data-lake-id="u80ba979b" id="u80ba979b">锁和分布式锁的核心区别主要在于作用范围和适用场景。</span></p>
  <p data-lake-id="u2d3b4cd4" id="u2d3b4cd4"><span data-lake-id="ud72cbad6" id="ud72cbad6">​</span><br></p>
  <p data-lake-id="u8c6db85e" id="u8c6db85e" style="text-align: left"><span data-lake-id="ufef71d95" id="ufef71d95">锁，我们常用的就是synchronized，ReentrantLock等，他们通常是在单个进程内起作用的同步机制，用于控制对共享资源的访问。多个线程或进程之间可以使用锁来确保对关键资源的互斥访问。</span></p>
  <p data-lake-id="u9a331e21" id="u9a331e21" style="text-align: left"><span data-lake-id="uc85dda59" id="uc85dda59">​</span><br></p>
  <p data-lake-id="u8c8acbd1" id="u8c8acbd1" style="text-align: left"><span data-lake-id="u3db44043" id="u3db44043">这种锁，主要适用于单体应用，确保在同一JVM进程内多个线程同步共享资源的访问。</span></p>
  <p data-lake-id="uc06ecd36" id="uc06ecd36" style="text-align: left"><span data-lake-id="uaa958788" id="uaa958788">​</span><br></p>
  <p data-lake-id="udadc0eb4" id="udadc0eb4"><span data-lake-id="u9a865dad" id="u9a865dad">分布式锁，作用范围更广泛，可以跨越多个计算机或多个进程，用于协调分布式系统中的不同节点，以确保在全局范围内对共享资源的互斥访问。</span></p>
  <p data-lake-id="u5f4290a1" id="u5f4290a1"><span data-lake-id="u89cc4e9b" id="u89cc4e9b">​</span><br></p>
  <p data-lake-id="u2a78e3ae" id="u2a78e3ae"><span data-lake-id="u3b656a12" id="u3b656a12">分布式锁适用于分布式系统中，各个节点之间需要协调共享资源访问的情况。在分布式环境中，传统的锁机制可能无法有效地处理多节点之间的同步问题，因此需要分布式锁来确保一致性。</span></p>
  <p data-lake-id="u5c6a2a53" id="u5c6a2a53"><span data-lake-id="uba5081bd" id="uba5081bd">​</span><br></p>
  <p data-lake-id="u9a8b16a6" id="u9a8b16a6"><span data-lake-id="u0c64a4d3" id="u0c64a4d3">所以，普通的锁主要用于单机环境，用于控制同一JVM进程中多个线程对共享资源的互斥访问。而分布式锁则适用于分布式环境，用于协调多个计算机或多个进程之间对共享资源的互斥访问，确保分布式系统的一致性。</span></p>
  <p data-lake-id="u56dbafcd" id="u56dbafcd"><span data-lake-id="u9e7045c4" id="u9e7045c4">​</span><br></p>
 </body>
</html>